home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / favloc-1.2-fx+tb.xpi / chrome / favloc.jar / content / favlocOptions.js < prev    next >
Text File  |  2008-06-18  |  11KB  |  269 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is FavLoc
  15.  *
  16.  * The Initial Developer of the Original Code is Justin Scott.
  17.  * Portions created by the Initial Developer are Copyright (C) 2006
  18.  * the Initial Developer. All Rights Reserved.
  19.  *
  20.  * Contributor(s): (none)
  21.  *
  22.  * Alternatively, the contents of this file may be used under the terms of
  23.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  24.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  25.  * in which case the provisions of the GPL or the LGPL are applicable instead
  26.  * of those above. If you wish to allow use of your version of this file only
  27.  * under the terms of either the GPL or the LGPL, and not to allow others to
  28.  * use your version of this file under the terms of the MPL, indicate your
  29.  * decision by deleting the provisions above and replace them with the notice
  30.  * and other provisions required by the GPL or the LGPL. If you do not delete
  31.  * the provisions above, a recipient may use your version of this file under
  32.  * the terms of any one of the MPL, the GPL or the LGPL.
  33.  *
  34.  * ***** END LICENSE BLOCK ***** */
  35. var FavLoc;
  36.  
  37. var FavLocOptions = {
  38.     //Populate the listbox from preferences
  39.     init: function() {
  40.         FavLoc = Components.classes['@fligtar.com/favloc;1'].getService().wrappedJSObject;
  41.         
  42.         var listbox = document.getElementById('favorites');
  43.         
  44.         for(var i = 0; i < FavLoc.favorites.length; i++) {
  45.             if(FavLoc.favorites[i] != "" && FavLoc.names[i] != "") {
  46.                 var row = document.createElement('listitem');
  47.                 var cell = document.createElement('listcell');
  48.                 cell.setAttribute('label', FavLoc.names[i]);
  49.                 row.appendChild(cell);
  50.                 var cell2 = document.createElement('listcell');
  51.                 cell2.setAttribute('label', FavLoc.favorites[i]);
  52.                 row.appendChild(cell2);
  53.                 listbox.appendChild(row);
  54.             }
  55.         }
  56.         
  57.         //Populate checkboxes from settings
  58.         document.getElementById('show-context-attachment').checked = FavLoc.settings['show-context-attachment'];
  59.         document.getElementById('show-context-allattachments').checked = FavLoc.settings['show-context-allattachments'];
  60.         document.getElementById('show-context-allattachmentsbox').checked = FavLoc.settings['show-context-allattachmentsbox'];
  61.         document.getElementById('show-context-image').checked = FavLoc.settings['show-context-image'];
  62.         document.getElementById('show-context-link').checked = FavLoc.settings['show-context-link'];
  63.         document.getElementById('show-file').checked = FavLoc.settings['show-file'];
  64.         document.getElementById('show-download').checked = FavLoc.settings['show-download'];
  65.         document.getElementById('automatically-select').checked = FavLoc.settings['automatically-select'];
  66.         document.getElementById('default-last-saved').checked = FavLoc.settings['default-last-saved'];
  67.         
  68.         //Disable settings that don't apply to the current application
  69.         document.getElementById('show-context-attachment').disabled = !FavLoc.isThunderbird;
  70.         document.getElementById('show-context-allattachments').disabled = !FavLoc.isThunderbird;
  71.         document.getElementById('show-context-allattachmentsbox').disabled = !FavLoc.isThunderbird;
  72.         document.getElementById('show-context-image').disabled = FavLoc.isThunderbird;
  73.         document.getElementById('show-context-link').disabled = FavLoc.isThunderbird;
  74.         document.getElementById('show-file').disabled = FavLoc.isThunderbird;
  75.         
  76.         document.getElementById('overwrite').selectedItem = document.getElementById('overwrite-' + FavLoc.overwrite);
  77.         
  78.         document.getElementById('name').addEventListener("input", function(e) { new FavLocOptions.enableAddButton(); }, false);
  79.    },
  80.    
  81.     //Show options window
  82.     showOptions: function() {
  83.         var optionsWindow = window.openDialog("chrome://favloc/content/favlocOptions.xul", "","chrome,resizable,centerscreen,close=no,modal");
  84.         optionsWindow.focus();
  85.     },
  86.  
  87.     //Open filepicker to select folder
  88.     openFilePicker: function() {
  89.         var nsIFilePicker = Components.interfaces.nsIFilePicker;
  90.         var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  91.         fp.init(window, FavLoc.bundle.GetStringFromName("favloc.options-filepicker"), nsIFilePicker.modeGetFolder);
  92.         var res = fp.show();
  93.         if(res == nsIFilePicker.returnOK){
  94.             document.getElementById("location").value = fp.file.path;
  95.         }
  96.         this.enableAddButton();
  97.     },
  98.     
  99.     //Enable/disable add button based on input
  100.     enableAddButton: function() {
  101.         var name = document.getElementById("name").value;
  102.         var location = document.getElementById("location").value;
  103.         var addloc = document.getElementById("addloc");
  104.         
  105.         if(name != "" && location != "") {
  106.             addloc.disabled=false;
  107.         }
  108.         else {
  109.             addloc.disabled=true;
  110.         }
  111.     },
  112.     
  113.     //Enable delete, move up, move down buttons when an item is selected
  114.     enableControlButtons: function() {
  115.         var listbox = document.getElementById('favorites');
  116.         var selected = listbox.selectedItem;
  117.         if(selected) {
  118.             var index = listbox.getIndexOfItem(selected);
  119.             var lastIndex = listbox.getRowCount() - 1;
  120.     
  121.             if(index != 0)
  122.                 document.getElementById("uploc").disabled = false;
  123.             else
  124.                 document.getElementById("uploc").disabled = true;
  125.                 
  126.             if(index != lastIndex)
  127.                 document.getElementById("downloc").disabled = false;
  128.             else
  129.                 document.getElementById("downloc").disabled = true;
  130.                 
  131.             document.getElementById("delloc").disabled = false;
  132.         }    
  133.     },
  134.     
  135.     //Disable delete, move up, move down buttons when an item is deleted
  136.     disableControlButtons: function() {
  137.         document.getElementById("uploc").disabled = true;
  138.         document.getElementById("downloc").disabled = true;
  139.         document.getElementById("delloc").disabled = true;    
  140.     },
  141.     
  142.     //Add new favorite location to the listbox
  143.     addNewLoc: function() {
  144.         var name = document.getElementById('name');
  145.         var location = document.getElementById('location');
  146.         
  147.         var listbox = document.getElementById('favorites');
  148.  
  149.         var row = document.createElement('listitem');
  150.         var cell = document.createElement('listcell');
  151.         cell.setAttribute('label', name.value);
  152.         row.appendChild(cell);
  153.         var cell2 = document.createElement('listcell');
  154.         cell2.setAttribute('label', location.value);
  155.         row.appendChild(cell2);
  156.         listbox.appendChild(row);
  157.  
  158.         name.value = "";
  159.         location.value = ""
  160.         this.enableAddButton();
  161.     },
  162.     
  163.     //Delete location from the listbox
  164.     deleteLoc: function() {
  165.         var listbox = document.getElementById('favorites');
  166.         var selected = listbox.selectedItem;
  167.  
  168.         listbox.removeItemAt(listbox.getIndexOfItem(selected));
  169.         
  170.         this.disableControlButtons();
  171.     },
  172.     
  173.     //Move location up in listbox
  174.     moveLocUp: function() {
  175.         var listbox = document.getElementById('favorites');
  176.         var selected = listbox.selectedItem;
  177.         var previous = listbox.getPreviousItem(selected, 1);
  178.         
  179.         listbox.insertBefore(selected, previous);
  180.         listbox.selectItem(selected);
  181.     },
  182.     
  183.     //Move location down in listbox
  184.     moveLocDown: function() {
  185.         var listbox = document.getElementById('favorites');
  186.         var selected = listbox.selectedItem;
  187.         var next = listbox.getNextItem(selected, 2);
  188.         
  189.         listbox.insertBefore(selected, next);
  190.         listbox.selectItem(selected);
  191.     },
  192.    
  193.    //Save the listbox to preferences file
  194.     setOptions: function() {
  195.         var browser = FavLoc.getBrowserWindow();
  196.         
  197.         var name = document.getElementById("name").value;
  198.         var location = document.getElementById("location").value;
  199.         
  200.         if(name != '' && location != '') {
  201.             var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
  202.  
  203.             var flags = promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_0 +
  204.                       promptService.BUTTON_TITLE_NO * promptService.BUTTON_POS_2 +
  205.                       promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1;
  206.  
  207.             var response = promptService.confirmEx(window, FavLoc.bundle.GetStringFromName("favloc.options-notadded-title"), FavLoc.bundle.GetStringFromName("favloc.options-notadded"), flags, null, null, null, null, {});
  208.             if(response == 0) {
  209.                 //Save
  210.                 this.addNewLoc();
  211.             }
  212.             else if(response == 2) {
  213.                 //Do not save... so continue
  214.             }
  215.             else if(response == 1) {
  216.                 //Cancel
  217.                 return false;
  218.             }
  219.         }
  220.         
  221.         var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
  222.         
  223.         var favorites = "";
  224.         var names = "";
  225.         var listbox = document.getElementById('favorites');
  226.         var listcell = document.getElementsByTagName("listcell");
  227.         var rows = listbox.getRowCount();
  228.         
  229.         for(var i = 0; i < (rows*2); i=i+2) {
  230.             if(favorites != "")
  231.                 favorites += "|";
  232.             if(names != "")
  233.                 names += "|";
  234.                 
  235.             names += listcell[i].getAttribute("label");
  236.             favorites += listcell[i+1].getAttribute("label");
  237.         }
  238.         
  239.         prefs.setCharPref("extensions.favloc.favorites", favorites);
  240.         prefs.setCharPref("extensions.favloc.names", names);
  241.         prefs.setCharPref("extensions.favloc.overwrite", document.getElementById('overwrite').selectedItem.value);
  242.         
  243.         prefs.setBoolPref("extensions.favloc.show-context-image", document.getElementById('show-context-image').checked);
  244.         prefs.setBoolPref("extensions.favloc.show-context-link", document.getElementById('show-context-link').checked);
  245.         prefs.setBoolPref("extensions.favloc.show-context-attachment", document.getElementById('show-context-attachment').checked);
  246.         prefs.setBoolPref("extensions.favloc.show-context-allattachments", document.getElementById('show-context-allattachments').checked);
  247.         prefs.setBoolPref("extensions.favloc.show-context-allattachmentsbox", document.getElementById('show-context-allattachmentsbox').checked);
  248.         prefs.setBoolPref("extensions.favloc.show-file", document.getElementById('show-file').checked);
  249.         prefs.setBoolPref("extensions.favloc.show-download", document.getElementById('show-download').checked);
  250.         prefs.setBoolPref("extensions.favloc.automatically-select", document.getElementById('automatically-select').checked);
  251.         prefs.setBoolPref("extensions.favloc.default-last-saved", document.getElementById('default-last-saved').checked);
  252.         
  253.         FavLoc.load();
  254.         if (FavLoc.isThunderbird) {
  255.             browser.FavLocContext.init('attachment');
  256.             browser.FavLocContext.init('allattachments');
  257.             browser.FavLocContext.init('allattachmentsbox');
  258.         }
  259.         else {
  260.             browser.FavLocFile.init();
  261.             browser.FavLocContext.init('image');
  262.             browser.FavLocContext.init('link');
  263.         }
  264.         window.close();
  265.         
  266.         return true;
  267.    }
  268.        
  269. };